#include <Wire.h>
#include <Adafruit_INA219.h>
#define SDA_pin 5
#define SCL_pin 4  

Adafruit_INA219 ina219;


void setup() {
    Wire.begin(SDA_pin, SCL_pin);
  Serial.begin(115200); // 使用更高的波特率获取更流畅的数据
  
  // 初始化INA219模块
  if (!ina219.begin()) {
    Serial.println("无法检测到INA219模块！请检查：");
    Serial.println("1. 接线是否正确（SDA/SCL/VCC/GND）");
    Serial.println("2. 模块是否损坏");
    while (1);
  }
  
  // 设置测量范围（推荐用于电池测量）
  ina219.setCalibration_32V_2A(); // 32V最大电压，2A最大电流
  
  Serial.println("INA219电池监测器已就绪");
  Serial.println("时间戳(ms), 电池电压(V), 输出电流(mA), 功率(mW)");
}

void loop() {
  // 获取精确时间戳
  unsigned long timestamp = millis(); 
  
  // 读取关键参数
  float busVoltage = ina219.getBusVoltage_V();   // 电池端电压
  float current_mA = ina219.getCurrent_mA();     // 输出电流
  float power_mW = busVoltage * current_mA;      // 输出功率
  
  // 输出CSV格式数据（可直接导入Excel）
  Serial.print(timestamp); Serial.print(",");
  Serial.print(busVoltage, 3); Serial.print(","); // 保留3位小数
  Serial.print(current_mA, 1); Serial.print(","); // 保留1位小数
  Serial.println(power_mW, 1);                   // 保留1位小数
  
  delay(250); // 每250ms采样一次（约4Hz）
}
